A Proof Carrying Code Framework for Inlined Reference Monitors in Java Bytecode

نویسندگان

  • Mads Dam
  • Andreas Lundblad
چکیده

We propose a lightweight approach for certification of Java bytecode monitor inlining using proof-carrying code. The main purpose of such a framework is to enable development use of monitoring for quality assurance, while minimizing the runtime overhead of monitoring, minimizing the need for changes to the loadand runtime tcb, and eliminating the need for post-shipping code rewrites with the resulting loss of liability. Policies to be enforced are specified in the ConSpec policy specification language which, roughly, express regular sequences of method calls to some fixed API. Proofs are represented as Java class files augmented with logical assertion in Floyd/Hoare logic style: Assertions are associated to each program point as well as to method entry and (exceptional and normal) exit points using standard, JML-style preand post-conditions. Such a proof representation is adequate in our case, as all proofs generated in our framework can be recognized in time linear in the size of the associated program. The basic proof generation strategy is to compare the effects of an actual, untrusted, inliner, with the effects of a trusted “ghost” inliner which is never actually executed, but is nonetheless present for analysis purposes. At time of receiving a program with proof annotations, it is sufficient for the receiver to plug in its own trusted ghost inliner and check the resulting, given, verification conditions, to be sure inlining has been performed correctly, of the correct policy. We have proved correctness of the approach at the Java bytecode level. A prototype implementation has been produced. We finally report on an example based on a J2ME snake game with a simple two-state policy.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Secure Optimization of Inlined Reference Monitors

Inlined Reference Monitor (IRM) is the preferred enforcement mechanism for historybased access control policies. IRM enforcement injects monitoring code into the binary of an untrusted program in order to track its execution history. The injected code denies access when execution deviates from the policy. The viability of IRM enforcement is predicated on the ability of the binary rewriting elem...

متن کامل

Security monitor inlining and certification for multithreaded Java

Security monitor inlining is a technique for security policy enforcement whereby monitor functionality is injected into application code in the style of aspect-oriented programming. The intention is that the injected code enforces compliance with the policy (security), and otherwise interferes with the application as little as possible (conservativity and transparency). Such inliners are said t...

متن کامل

Efficient Java bytecode verification by the means of proof-carrying code

Bytecode verification is known to be a crucial component in the overall security model of Java programs, in particular applets, a term often used for mobile code serving on the Web, on embedded devices or smart cards. In those environments executable code is often sent over untrusted channels or even downloaded from completely untrusted sources. Hence it is critical, that every piece of code to...

متن کامل

Asserting Bytecode Safety

We instantiate an Isabelle/HOL framework for proof carrying code to Jinja bytecode, a downsized variant of Java bytecode featuring objects, inheritance, method calls and exceptions. Bytecode annotated in a first order expression language can be certified not to produce arithmetic overflows. For this purpose we use a generic verification condition generator, which we have proven correct and rela...

متن کامل

Verified proof carrying code

Proof Carrying Code (PCC) is a technique to exclude safety errors in low level code. Instead of runtime tests, it statically checks a proof of safety (a certificate) attached to the code. To guarantee that PCC only accepts safe code, we formalise and verify it in Isabelle/HOL, an interactive theorem prover for higher order logic. In an abstract framework we identify key components and their int...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:
  • CoRR

دوره abs/1012.2995  شماره 

صفحات  -

تاریخ انتشار 2008